package com.rbac.admin.mapper.system;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.rbac.admin.entity.system.SystemMenu;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 菜单Mapper接口
 *
 * @author rbac-admin
 * @since 2024-07-18
 */
@Mapper
@Repository
public interface MenuMapper extends BaseMapper<SystemMenu> {

    /**
     * 根据用户ID查询菜单列表
     *
     * @param userId 用户ID
     * @return 菜单列表
     */
    List<SystemMenu> selectMenusByUserId(@Param("userId") String userId);

    /**
     * 根据角色ID查询菜单列表
     *
     * @param roleId 角色ID
     * @return 菜单列表
     */
    List<SystemMenu> selectMenusByRoleId(@Param("roleId") String roleId);
    
    /**
     * 根据角色ID查询菜单ID列表
     *
     * @param roleId 角色ID
     * @return 菜单ID列表
     */
    List<String> selectMenuIdsByRoleId(@Param("roleId") String roleId);

    /**
     * 根据用户ID查询权限列表
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    List<String> selectPermissionsByUserId(@Param("userId") String userId);

    /**
     * 根据用户ID和角色ID查询菜单列表（角色切换专用）
     *
     * @param userId 用户ID  
     * @param roleId 角色ID
     * @return 菜单列表
     */
    List<SystemMenu> selectMenusByUserIdAndRoleId(@Param("userId") String userId, @Param("roleId") String roleId);

    /**
     * 根据用户ID和角色ID查询权限列表（角色切换专用）
     *
     * @param userId 用户ID
     * @param roleId 角色ID
     * @return 权限列表
     */
    List<String> selectPermissionsByUserIdAndRoleId(@Param("userId") String userId, @Param("roleId") String roleId);
}